a. Field of the Invention
The invention relates generally to a data storage device shared by multiple hosts by way of a network. More specifically, the invention relates to efficient access by multiple hosts of a data storage device over a network while maintaining the data integrity of the storage device.
b. Background of the Invention
Generally, hosts, as referred to herein, are electronic devices that employ data storage devices to store digital data for later retrieval and processing by the host. Hosts include, but are not limited to, computers (including desktop personal computers, laptop personal computers and workstations), personal digital assistants (PDAs), digital audio systems, digital television sets, television set-top boxes, digital game devices, smart phones, hand-held computers and other digital data processing devices. Data storage devices include, but are not limited to, hard disk drives, tape drives, flash memory units, and compact disc (CD) and digital versatile disc (DVD) drives. Further, the data written to or read from a storage device may take any of a variety of forms, including, for example, numerical, textual, audio and video data.
Often, data storage devices are not connected directly with a host, but instead communicate with the host via an intermediate electronic device called a device controller, which couples a data storage device with a central processing unit (CPU) and/or logic memory of the host, thus providing a mechanism for transferring data therebetween. Generally, the host also employs its operating system (i.e., the software resident on a host that controls the overall operation of the host) to facilitate communication between the CPU and/or logic memory and the device controller. For example, FIG. 1 depicts a typical hardware configuration for a computer system. A device controller 11 attached to a system bus 9 of a computer system enables data transfers between data devices 12, 13, and a CPU 3 and logic memory 4. As shown in FIG. 1, the device controller 11 may control one or more data storage devices.
Generally, in situations in which a data storage device is to be shared between two or more hosts, the storage device is not shared among the hosts directly at device level. Instead, the storage device often resides within one of the hosts involved, while the remaining hosts communicate with the data storage device by way of the host containing the data device. Typically, communication between the hosts occurs via a network file system. In general, a file system (for example, the NT File System (NTFS) employed by Microsoft Windows®) is the portion of an operating system responsible for the storage and tracking of files, and a file system that cooperates with other file systems over a network is termed a network file system. Typically, maintaining a stable state in such a system requires that all file write operations by one host, including the writing of any file directory information and other file “meta-data,” be allowed to complete prior to allowing access by another host.
However, in such a network a complete computer system or host providing a network file system is required for each data storage device added to the network, thus significantly increasing the cost of the system. More importantly, the multiple hosts possess a file system dependency when sharing data at the file system level, as all of the hosts involved must agree on a particular network file system protocol. Further, when a change in the network file system is required, that change must be implemented in all hosts involved. In addition, the usage of files remotely accessible through network file systems typically is limited compared to what is possible by way of direct access of the files from a data storage device, such as a hard disc drive.
Sharing a storage device directly at the device level through a network provides certain advantages over indirect sharing of the storage device via network file systems. Direct sharing tends to be more efficient in terms of latency and access times. Direct sharing is more cost effective because less expensive hardware, in the form of a network device controller may be used instead of an entire computer system, which allows direct connection of each storage device via a network. No additional operating system or file system software is required, which also eliminates the file system dependency problems and limitations identified above.
However, given that such a system provides no centralized control of data transfers between the hosts and the storage device, data integrity is a potential problem. For example, with each host of the system writing and reading various portions of the storage device, one host may easily overwrite portions of files previously written by another host, thus possibly causing partial or total loss of the data contained in the files.
To further explain, sharing a data storage device over a network presents unique challenges compared to, for example, those involved with sharing a network printer. A network printer is often shared by more than two host computers, but the nature of the data being transferred over the network necessitates the two situations be treated differently.
Print commands from computers to network printers apply only to complete files. As a result, all commands issued to a network printer are guaranteed to be serialized at the file level so that no overlapped or interleaved files may be printed. In other words, a file in the shared network printer environment cannot be divided into smaller portions to be interleaved with portions of other files to be printed.
However, files intended for a data storage device, such as a hard disk drive, are ultimately translated into one or more physical sectors of the data device by way of file system software. Further, no guarantee exists that the file will not occupy several discontinuous series of sectors on the data storage device. Therefore, different files from various hosts sharing the storage device may possibly be mapped onto overlapping sectors unless the file systems of the hosts cooperate in some manner.
Given the foregoing, systems and methods that allow multiple hosts to access a shared data storage device in an efficient manner without loss of data integrity would be advantageous.